package com.runtime.hongyunuser.mapper;

import com.runtime.hongyunuser.bean.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;


@Mapper
public interface UserMapper {
    Users login(Users users);

    //查询菜单
    List<Categories> getMenu();

    // 查询订单地址列表
    List<OrderDTO> getOrderList(
            @Param("userId") Long userId,
            @Param("orderNumber") String orderNumber,
            @Param("productNumber") String productNumber, // 新增商品货号参数
            @Param("status") String status,
            @Param("startDate") LocalDate startDate,
            @Param("endDate") LocalDate endDate
    );

    // 查询用户收获地址列表
    List<Useraddresses> selectUserAddresses(@Param("userId") Long userId);

    // 清除用户所有默认地址标记
    void clearDefaultAddresses(@Param("userId") Long userId);

    // 设置默认地址
    int setDefaultAddress(@Param("addressId") Long addressId,
                          @Param("userId") Long userId);

    // 新增收货地址
    int insertUserAddress(Useraddresses useraddresses);

    // 根据父ID查询区域
    List<Regions> selectRegionsByParentId(@Param("parentId") Integer parentId);


    // 更新收货地址
    int updateUserAddress(Useraddresses useraddresses);

    // 删除收货地址
    int deleteUserAddress(@Param("addressId") Long addressId, @Param("userId") Long userId);


    // 查询订单详情
    OrderDTO getOrderDetail(@Param("orderNumber") String orderNumber);

    // 查询订单商品明细
    List<OrderItemDTO> getOrderItems(@Param("orderNumber") String orderNumber);

    // 查询订单收货地址
    ShippingAddressDTO getOrderShippingAddress(@Param("orderNumber") String orderNumber);

    // 插入订单
    int insertOrder(Orders orders);

    // 批量插入订单商品
    int insertOrderItems(@Param("list") List<OrderItemDTO> items);


}
